package com.bookstore.service;

import com.bookstore.dto.BookDTO;
import org.springframework.http.ResponseEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface BookService {
    List<BookDTO> getAllBooks();
    Page<BookDTO> getBooks(Pageable pageable);
    BookDTO getBookById(Long id);
    BookDTO createBook(BookDTO bookDTO);
    BookDTO updateBook(Long id, BookDTO bookDTO);
    void deleteBook(Long id);
    
    // 原有方法保留，但标记为过时
    @Deprecated
    List<BookDTO> searchBooks(Long categoryId, String keyword);
    
    // 原有分页查询方法
    @Deprecated
    Page<BookDTO> searchBooks(Long categoryId, String keyword, Double minPrice, Double maxPrice, String degree, Pageable pageable);
    List<BookDTO> getBooksByCategory(Long categoryId);
    ResponseEntity<?> addBook(BookDTO bookDTO);
    // 新增完整分页查询方法
    // 更新后的分页查询方法
    Page<BookDTO> searchBooks(
        Long categoryId, 
        String keyword,
        String title,
        String author,
        Double minPrice, 
        Double maxPrice, 
        String degree, 
        Boolean isHot, 
        Boolean isRecommended, 
        Boolean isFlashSale, 
        Pageable pageable
    );
    
    /**
     * 根据图书类型获取图书列表
     * @param isHot 是否热销
     * @param isRecommended 是否推荐
     * @param isFlashSale 是否抢购
     * @param pageable 分页参数
     * @return 图书DTO分页对象
     */
    Page<BookDTO> getBooksByType(Boolean isHot, Boolean isRecommended, Boolean isFlashSale, Pageable pageable);
    
    // 添加这个方法到BookService接口
    List<BookDTO> getYouMayLikeBooks(Long userId, Long categoryId, int limit);
}